home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 20 / Cream of the Crop 20 (Terry Blount) (1996).iso / program / pcl4w13.zip / RUNTEST.C < prev    next >
Text File  |  1996-07-14  |  3KB  |  120 lines

  1. /*** runtest ***/
  2.  
  3. #include "windows.h"
  4. #include "stdio.h"
  5. #include "pcl4w.h"
  6. #include "sioerror.h"
  7. #include "paint.h"
  8. #include "line.h"
  9. #include "runtest.h"
  10.  
  11. extern HWND hMainWnd;
  12. extern int  OnLineFlag;
  13. extern char Temp[1024];
  14.  
  15. #define TEST_SIZE 62
  16.  
  17. /* private */
  18.  
  19. static char TestSet[TEST_SIZE+1];
  20. static int  NbrRuns = 16;
  21. static int  TestLength = 0;
  22. static int  TxBase = 0;
  23. static int  RxBase = 0;
  24. static int  TestRun = 0;
  25.  
  26. /* public */
  27.  
  28. int RunTest(int Port)
  29. {int i;
  30.  int n;
  31.  int c;
  32.  int rc;
  33.  
  34.  /* initialize */
  35.  TxBase = SioInfo('T');
  36.  RxBase = SioInfo('R');
  37.  if(TestLength==0)
  38.    {/* build TestSet[] array */
  39.     for(i=0;i<26;i++) TestSet[i] = 'A'+i;
  40.     for(i=0;i<26;i++) TestSet[26+i] = 'a'+i;
  41.     for(i=0;i<10;i++) TestSet[52+i] = '0'+i;
  42.     TestSet[62] = '\0';
  43.    }
  44.  
  45.  /* check for loopback adapter */
  46.  SioRxClear(Port);
  47.  SioTxClear(Port);
  48.  SioPutc(Port,'$');
  49.  if( (char)SioGetc(Port,9) != '$')
  50.    {DisplayLine("Loopback not detected. See Instructions.");
  51.     return FALSE;
  52.    }
  53.  
  54.  /* run the test */
  55.  sprintf(Temp,"\nTest Run %d\n", ++TestRun);
  56.  DisplayLine(Temp);
  57.  sprintf(Temp,"Test Set: %s",TestSet);
  58.  DisplayString(Temp);
  59.  
  60.  /* send test sets */
  61.  DisplayString("\n  Sending set: ");
  62.  for(i=0;i<NbrRuns;i++)
  63.     {/* send test set again */
  64.      sprintf(Temp,"%d ",i);
  65.      DisplayString(Temp);
  66.      for(n=0;n<TEST_SIZE;n++)
  67.         {c = TestSet[n];
  68.          SioPutc(Port,(char)c);
  69.         }
  70.     }
  71.  
  72.  /* receive test sets */
  73.  DisplayString("\nReceiving set: ");
  74.  for(i=0;i<NbrRuns;i++)
  75.     {/* receive next test set */
  76.      for(n=0;n<TEST_SIZE;n++)
  77.         {rc = SioGetc(Port,36);
  78.          if(rc<0)
  79.             {SioError(rc,"SioGetc:");
  80.              sprintf(Temp,"%d bytes in COM%d RX queue\n", SioRxQue(Port),1+Port );
  81.              DisplayLine(Temp);
  82.              sprintf(Temp,"%d bytes in COM%d TX queue\n", SioTxQue(Port),1+Port );
  83.              DisplayLine(Temp);
  84.              sprintf(Temp,"%d RX interrupts\n",SioInfo('R') - RxBase );
  85.              DisplayLine(Temp);
  86.              return FALSE;
  87.             }
  88.          /* compare character */
  89.          if((char)rc!=TestSet[n])
  90.            {sprintf(Temp,"\nERROR: Expecting '%c'(0x%x), received '%c'(0x%x)\n",
  91.               (char)rc,(char)rc,TestSet[n],TestSet[n]);
  92.             DisplayLine(Temp);
  93.             return FALSE;
  94.            }
  95.         } /* end-for(n) */
  96.      sprintf(Temp,"%d ",i);
  97.      DisplayString(Temp);
  98.     } /* end-for(i) */
  99.  
  100.  /* look at results */
  101.  DisplayLine("");
  102.  /* check RX FIFO */
  103.  TestLength = NbrRuns * TEST_SIZE;
  104.  i = SioInfo('R');
  105.  sprintf(Temp,"%3d RX interrupts on %d incoming bytes: ", i-RxBase,TestLength);
  106.  DisplayString(Temp);
  107.  if(i-RxBase<TestLength) DisplayLine("RX FIFO is operational");
  108.  else DisplayLine("RX FIFO is NOT operational [or not 16550 UART]");
  109.  if(SioInfo('I'))
  110.     {/* check TX FIFO */
  111.      i = SioInfo('T');
  112.      sprintf(Temp,"%3d TX interrupts on %d outgoing bytes: ", i-TxBase,TestLength);
  113.      DisplayString(Temp);
  114.      if(i-TxBase<TestLength) DisplayLine("TX FIFO is operational");
  115.      else DisplayLine("TX FIFO is NOT operational [or not 16550 UART]");
  116.     }
  117.  DisplayLine("SUCCESS: Test AOK !");
  118.  return TRUE;
  119. }
  120.